<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="created" content="2018-10-23T06:18:10.521000000">
    <meta name="changed" content="2021-07-18T10:59:00.000000000">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="en">
    <title>
      Splitter
    </title>
    <link rel="stylesheet" type="text/css" href="../../style.css">
  </head>
  <body>
    <div class="maindiv">
      <h1>
        <img class="iconlibs" src="../../../../icons/6464/splitter.png" alt="#########" height="32" width="32"> <em>Splitter</em>
      </h1>
      <table>
        <tbody>
          <tr>
            <td>
              <strong>Library:</strong>
            </td>
            <td>
              <a href="index.html">Wiring</a>
            </td>
          </tr>
          <tr>
            <td>
              <strong>Introduced:&nbsp;</strong>
            </td>
            <td>
              2.0 Beta 1 (in Base library, moved to Wiring in 2.7.0)
            </td>
          </tr>
          <tr>
            <td valign="top">
              <strong>Appearance:</strong>
            </td>
            <td valign="top">
              <img class="notscal" src="../../../../img-libs/splitter.png" alt="#########" width="24" height="44">
            </td>
          </tr>
        </tbody>
      </table>
      <h2>
        Behavior
      </h2>
      <p>
        The splitter creates a correspondence between a multi-bit value and several separate subsets of those bits. Despite its name, it can either split a multi-bit value into component parts, or it can combine component parts into a multi-bit value - or indeed it can do both at once. A more complete description of splitters is found in the <a class=refguide href="../../guide/feature/fet-splitting.html">Splitters</a> section of the <a href="../index.html">User guide</a>
      </p>
      <p>
        Logisim treats splitters specially when propagating values within a circuit: Whereas all other components have a computed delay for purposes of simulating their behavior, values propagate through splitters (as well as wires) instantaneously.
      </p>
      <p>
        <b classe=note>Note:</b> The term <em>splitter</em> is a non-standard term, which is unique to Logisim as far as I know. I am unaware of any standard term for such a concept; the only term I have heard used is <em>bus ripper</em>, but this term is unnecessarily violent for my tastes.
      </p>
      <h2>
        Pins
      </h2>
      <p>
        To distinguish the several connecting points for a splitter, we refer to the single connecting point one side as its <em>combined end</em>, and we refer to the multiple connecting points on the other side as its <em>split ends</em>. (see figure below)
      </p>
	   <center>
        <table>
          <tbody>
            <tr>
              <td></td>
              <td valign="top">
                Bus
              </td>
              <td>
                <img src="../../../../img-libs/splitter-right.png" alt="#########">
              </td>
              <td>
                Split ends
              </td>
            </tr>
          </tbody>
        </table>
      </center>
      <dl>
	  <dd></dd>
        <dt>
          <b class="propertie">Bus :</b>
        </dt>
		<dd>
		  the bit width of the bus corresponds to the <b class="propertie">Bit width</b> attribute and it is the value counting all the conductors transiting the bus.
		</dd>
		<dt>
		  <b class="propertie">Split ends :</b>
		</dt>
         <dd>
          The bit width of the terminations is determined by the bit width of the bus divided (integer division) by the number of terminations. In other cases, the widths will be distributed in a balanced fractional way.
          For example, a 10-bit bus with 4 terminations will have two 3-bit terminations and two 2-bit terminations.
        </dd>
      </dl>
    
	<h2>
        Attributes
      </h2>
      <p>
        When the component is selected or being added, the digits <b class="tkeybd">0</b> through <b class="tkeybd">9</b> alter its <b class="propertie">Fan Out</b> attribute, <b class="tkeybd">Alt-0</b> through <b class="tkeybd">Alt-9</b> alter both the <<b class="propertie">Fan Out</b> and <b class="propertie">Bit Width In</b> attributes, and the arrow keys alter its <b class="propertie">Facing</b> attribute.
      </p>
	  <div class="attliste">
      <dl>
        <dt>
          <b class="propertie">Facing</b>
        </dt>
        <dd>
          <p>
            The location of the split ends relative to the combined end.
          </p>
        </dd>
        <dt>
          <b class="propertie">Fan Out</b>
        </dt>
        <dd>
          <p>
            The number of split ends.
          </p>
        </dd>
        <dt>
          <b class="propertie">Bit Width In</b>
        </dt>
        <dd>
          <p>
            The bit width of the bus.
          </p>
        </dd>
        <dt>
          <b class="propertie">Appearance</b>
        </dt>
        <dd>
          <p>
            Supports different ways of depicting the splitter in the circuit. The <q>Left-handed</q> option (the default) draws a spine going left from the combined end, with a labeled line coming from the spine for each split end. The <q>Right-handed</q> option is the same except the spine goes
            right (if you're facing according to the Facing attribute). The <q>Centered</q> option centers the spine so it goes in roughly equal directions left and right. And the <q>Legacy</q> option draws diagonal lines to each split end, without labels; this option is primarily for compatibility
            with versions older than 2.7.0, when this was the only option for splitter appearance.
          </p>
		  <center>
            <table>
              <tbody>
                <tr>
                  <td>
                    <img class="notscal" src="../../../../img-libs/splitter-left.png" alt="#########" align="middle">
                  </td>
                  <td>
                    <img class="notscal"  src="../../../../img-libs/splitter-right.png" alt="#########" align="middle">
                  </td>
                  <td>
                    <img class="notscal"  src="../../../../img-libs/splitter-center.png" alt="#########" align="middle">
                  </td>
                  <td>
                    <img class="notscal"  src="../../../../img-libs/splitter-legacy.png" alt="#########" align="middle">
                  </td>
                </tr>
                <tr>
                  <td>
                    Left-handed
                  </td>
                  <td>
                    Right-handed
                  </td>
                  <td>
                    Centered
                  </td>
                  <td>
                    Legacy
                  </td>
                </tr>
              </tbody>
            </table>
          </center>
        </dd>
		<dt>
          <b class="propertie">Spacing</b>
      </dt>
      <dd>
	    Determines the spacing between terminations.
      <dt>
        <dt>
          <b class="propertie">Bit <var>x</var></b>
        </dt>
        <dd>
          <p>
            The index of the split end to which bit <var>x</var> of the combined end corresponds. The split ends are indexed starting from 0 at the top (for a splitter facing east or west) or from 0 at the left/west (for a splitter facing north or south). A bit can be specified to correspond to
            none of the split ends. There is no way for a bit to correspond to multiple split ends.
          </p>
          <p>
            Sometimes you can avoid twiddling each individual Bit <var>x</var> attribute by bringing up the pop-up menu for a splitter (usually by right-clicking or control-clicking it). The pop-up menu includes options labeled Distribute Ascending and Distribute Descending. The Distribute
            Ascending option distributes the bits so that each split end receives the same number of bits, starting from end 0. (If the number of split ends doesn't divide exactly into the number of bits, then the bits are distributed as evenly as possible.) Distribute Descending does the same but
            starts from the highest-numbered end.
          </p>
        </dd>
      </dl>
	  </div>
      <h2>
        Poke Tool Behavior
      </h2>
      <p>
        None.
      </p>
      <h2>
        Text Tool Behavior
      </h2>
      <p>
        None.
      </p>
      <p>
        <b>Back to</b> <a href="../index.html">Library Reference</a>
      </p>
    </div>
  </body>
</html>
